WORKSHOP5 /* * Cay S. Horstmann & Gary Cornell, Core Java * Published By Sun Microsystems Press/Prentice-Hall * Copyright (C) 1997 Sun Microsystems Inc. * All Rights Reserved. * * Permission to use, copy, modify, and distribute this * software and its documentation for NON-COMMERCIAL purposes * and without fee is hereby granted provided that this * copyright notice appears in all copies. * * THE AUTHORS AND PUBLISHER MAKE NO REPRESENTATIONS OR * WARRANTIES ABOUT THE SUITABILITY OF THE SOFTWARE, EITHER * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. THE AUTHORS * AND PUBLISHER SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED * BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING * THIS SOFTWARE OR ITS DERIVATIVES. */ /* Modified by Warakorn */ /** * @version 1.00 07 Feb 1996 * @author Cay Horstmann */ import java.util.*; import corejava.*; public class ExecutiveTest { public static void main(String[] args) { Employee[] staff = new Employee[3]; staff[0] = new Employee("Little Bird", 35000, new Day(1999,10,1)); staff[1] = new Manager("Miss K", 200000, new Day(1990,12,15),"Miss Glasses"); staff[2] = new Executive("Warakon Kunawong", 120000, new Day(1998,3,15),"Little Bird" , "Saan"); int i; for (i = 0; i < 3; i++) staff[i].raiseSalary(5); for (i = 0; i < 3; i++) staff[i].print(); } } class Employee { public Employee(String n, double s, Day d) { name = n; salary = s; hireDay = d; } public void print() { System.out.println(name + " " + (int)salary + " " + hireYear()); } public void raiseSalary(double byPercent) { salary *= 1 + byPercent / 100; } public int hireYear() { return hireDay.getYear(); } protected String name; protected double salary; protected Day hireDay; } class Manager extends Employee { public Manager(String n, double s, Day d) { super(n, s, d); secretaryName = ""; } public Manager(String n, double s, Day d, String sName) { super(n, s, d); secretaryName = sName; } public void raiseSalary(double byPercent) { // add 1/2% bonus for every year of service Day today = new Day(); double bonus = 0.5 * (today.getYear() - hireYear()); super.raiseSalary(byPercent + bonus); } public void print() { System.out.println(name + " " + (int)salary + " " + hireYear()+" "+ secretaryName); } public void setSecretaryName(String n) { secretaryName = n; } public String getSecretaryName() { return secretaryName; } protected String secretaryName; } class Executive extends Manager { public Executive(String n, double s, Day d) { super(n, s, d); driverName = ""; } public Executive(String n, double s, Day d, String sName,String dName) { super(n, s, d, sName); driverName = dName; } public void raiseSalary(double byPercent) { // add 3/4% bonus for every year of service Day today = new Day(); double bonus = 0.75 * (today.getYear() - hireYear()); super.raiseSalary(byPercent + bonus); } public void print() { System.out.println(name + " " + (int)salary + " " + hireYear()+" "+ secretaryName+ " " +driverName); } public void setDriverName(String n) { driverName = n; } public String getDriverName() { return driverName; } private String driverName; }; =============================== result =============================== Little Bird 36750 1999 Miss K 220000 1990 Miss Glasses Warakon Kunawong 129000 1998 Little Bird Saan